Recently, the JPEG2000 has become known as an encoding technique suited for treating high-definition images. According to an encoding process of the JPEG2000, image data are transformed or converted into data of color components Y, Cb and Cr, and then subjected to a two-dimensional discrete wavelet transform as a frequency analysis with respect to the data of the color components Y, Cb and Cr. Data of wavelet coefficients obtained by the two-dimensional discrete wavelet transform are divided into bit-planes using sub-bands as the processing unit. The data of each bit-plane are scanned by 3 methods in an order starting from significant data, for each sub-band, and subjected to an arithmetic encoding.
Inclusion information which indicates the existence of significant data in units of code blocks, a number of bit-planes in which all significant bits of the code block are zero (hereinafter referred to as zero-bit-planes), a number of encoding paths and a number of bytes of the codes, are checked from encoded data generated by the arithmetic encoding, so as to generate a packet header. A codestream (or code sequence) is formed by arranging the packet header and the encoded data for each sub-band, and output as the data of the codestream which is obtained by encoding the image data. The encoding process of the JPEG2000 is further described in “Summary of New International Standard (JPEG2000) For Still Image Encoding”, Video Information Media Society Magazine 2000, Vol. 54, No. 2, pp. 164-171.
According to the JPE2000 standard, a concept called “TAG” is employed as a method of describing the inclusion information which is obtained for each code block. More particularly, the code blocks within the sub-band are grouped into groups each made up of 2×2 code blocks, and the TAG of the group is set to “0” if all of the 4 code blocks within the group includes no significant data. The TAG of the group is set to “1” if at least one of the 4 code blocks within the group includes significant data. Then, the TAGs are grouped into TAG groups each made up of 2×2 TAGs. TAG information in a level (or layer) which is one level (or layer) higher is set to “0” if all of the 4 TAGs within the TAG group are “0”. On the other hand, the TAG information in a level which is one level higher is set to “1” if at least one of the 4 TAGs within the TAG group is “1”. Values of the TAG information in the more significant levels are obtained similarly thereafter, and the TAG information analysis ends by finally specifying the value of the TAG information at the most significant level.
Based on the TAG information which is obtained by the above described technique, when the TAG information of the lower levels is viewed from the TAG information of the most significant level and the value of the TAG information of a certain level is “0”, it may be judged that all of the code blocks located in the levels lower than the certain level have no significant data. For example, when extracting the encoded data to be decoded from the codestream in which the packet header and the encoded data of the code blocks of each sub-band are arranged in a predetermined sequence, as a decoding process, the encoded data can be specified without referring to the inclusion information within the packet header with respect to the code blocks located in the levels lower than the level for which the value of the TAG information is “0”, thereby omitting unnecessary access.
The JPEG2000 standard also employs, in addition to the above described inclusion information of the code blocks, a concept called “ZERO-TAG” to indicate the number of zero-bit-planes. More particularly, the code blocks within the sub-band are grouped into groups each made up of 2×2 code blocks, and a minimum value of the numbers of the zero-bit-planes in the group is regarded as the value of the ZERO-TAG for the group. The value of the zero-bit-plane in each code block is updated by subtracting the value of the ZERO-TAG for the group from the value of the zero-bit-plane. Further, a minimum value of the 2×2 ZERO-TAGs obtained for an adjacent code block is regarded as the value of a ZERO-TAG of a level which is one level higher, and the value of the 2×2 ZERO-TAGs is updated by subtracting the value of the ZERO-TAG of the level which is one level higher. The values of the ZERO-TAGs of the higher levels are successively obtained in a similar manner, and the ZERO-TAG information analysis ends by finally specifying the value of the ZERO-TAG at the most significant level.
By using the ZERO-TAG information obtained in the above described manner, it is possible to replace the number of zero-bit-plane to a value having a smaller number of digits (or bits), and the amount of data of the codestream can be reduced.
Conventionally, a process for generating the above described information is realized by software processing. For this reason, in addition to a memory for storing the generated TAG information and the ZERO-TAG information, it was necessary to provide a memory for storing processing programs of an operation processing unit such as a CPU and a work memory for use by operations carried out by the CPU. In order to generate the TAG information and the ZERO-TAG information of the most significant level based on the inclusion information and the information related to the number of zero-bit-planes, it is necessary to temporarily store the inclusion information of each code block of all sub-bands in each level and the information related to the number of zero-bit-planes. Consequently, it was-necessary to provide a work memory having a considerably large memory capacity.